package deepseek

import (
	"fmt"
	"log"
	"net/http"
)

func SetUpSSE() {
	// 创建一个 HTTP 服务器
	http.HandleFunc("/sse", SSEHandler)

	// 启动 HTTP 服务
	log.Println("Starting SSE server on :8889")
	err := http.ListenAndServe(":8889", nil)
	if err != nil {
		log.Fatal("ListenAndServe: ", err)
	}
}

// SSEHandler 处理 SSE 连接
func SSEHandler(w http.ResponseWriter, r *http.Request) {
	// 设置响应头，表明这是一个 SSE 流
	w.Header().Set("Content-Type", "text/event-stream")
	w.Header().Set("Cache-Control", "no-cache")
	w.Header().Set("Connection", "keep-alive")
	// 监听客户端是否断开连接
	notify := w.(http.CloseNotifier).CloseNotify()
	for {
		select {
		case msg := <-MessageChan:
			// 将消息写入响应流
			fmt.Fprintf(w, "data: %s\n\n", msg)
			// 刷新响应流
			w.(http.Flusher).Flush()
		case <-notify:
			// 客户端断开连接
			log.Println("Client disconnected")
			return
		}
	}
}
